"""
日志工具模块
"""

import logging
import sys
from typing import Optional

from ..config.settings import settings


def get_logger(name: Optional[str] = None) -> logging.Logger:
    """
    获取配置好的日志记录器
    
    Args:
        name: 日志记录器名称，默认为调用模块名
        
    Returns:
        配置好的日志记录器
    """
    if name is None:
        # 获取调用者的模块名
        frame = sys._getframe(1)
        name = frame.f_globals.get('__name__', 'iot_mcp_server')
    
    logger = logging.getLogger(name)
    
    # 避免重复配置
    if logger.handlers:
        return logger
    
    # 设置日志级别
    logger.setLevel(getattr(logging, settings.log_level.upper()))
    
    # 创建控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(getattr(logging, settings.log_level.upper()))
    
    # 创建格式化器
    formatter = logging.Formatter(settings.log_format)
    console_handler.setFormatter(formatter)
    
    # 添加处理器到日志记录器
    logger.addHandler(console_handler)
    
    # 防止日志向上传播（避免重复输出）
    logger.propagate = False
    
    return logger


# 创建默认日志记录器
default_logger = get_logger("iot_mcp_server")
